home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / system / sandra / san1135.exe / {app} / examples / SQL Server Schema.sql < prev    next >
Text File  |  2006-12-24  |  6KB  |  216 lines

  1.  
  2. --
  3. -- SQL Server 7.0/2000/2005 Schema for Sandra Report (Unicode)
  4. --
  5. -- Database is assumed to have been created already.
  6. -- No size settings included, please add as required.
  7. --
  8. -- Copyright (c) 1995-2007, SiSoftware Ltd.
  9. -- All Rights Reserved.
  10. --
  11.  
  12. --USE Sandra;
  13.  
  14. --
  15. -- Kill all tables
  16. --
  17.  
  18. IF exists(select * from sysobjects where id = object_id('TItem') and OBJECTPROPERTY(id, 'IsTable') = 1)
  19. DROP TABLE TItem;
  20.  
  21. IF exists(select * from sysobjects where id = object_id('TControl') and OBJECTPROPERTY(id, 'IsTable') = 1)
  22. DROP TABLE TControl;
  23.  
  24. IF exists(select * from sysobjects where id = object_id('TItemGroup') and OBJECTPROPERTY(id, 'IsTable') = 1)
  25. DROP TABLE TItemGroup;
  26.  
  27. IF exists(select * from sysobjects where id = object_id('TDevice') and OBJECTPROPERTY(id, 'IsTable') = 1)
  28. DROP TABLE TDevice;
  29.  
  30. IF exists(select * from sysobjects where id = object_id('TClass') and OBJECTPROPERTY(id, 'IsTable') = 1)
  31. DROP TABLE TClass;
  32.  
  33. IF exists(select * from sysobjects where id = object_id('TModule') and OBJECTPROPERTY(id, 'IsTable') = 1)
  34. DROP TABLE TModule;
  35.  
  36. IF exists(select * from sysobjects where id = object_id('TReport') and OBJECTPROPERTY(id, 'IsTable') = 1)
  37. DROP TABLE TReport;
  38.  
  39. IF exists(select * from sysobjects where id = object_id('TIDCount') and OBJECTPROPERTY(id, 'IsTable') = 1)
  40. DROP TABLE TIDCount;
  41.  
  42. IF exists(select * from sysobjects where id = object_id('VItemNGroup') and OBJECTPROPERTY(id, 'IsView') = 1)
  43. DROP VIEW VItemNGroup
  44.  
  45. --
  46. -- Create new tables
  47. --
  48.  
  49. CREATE TABLE TReport (
  50.     ID            INT IDENTITY (1,1),
  51.     
  52.     ProgVersion        INT NOT NULL,
  53.     BuildVersion        INT NOT NULL,
  54.     Completed        BIT NOT NULL,
  55.  
  56.     CONSTRAINT        cnstRIID PRIMARY KEY(ID)
  57. );
  58.  
  59. CREATE TABLE TModule (
  60.     ID            INT IDENTITY (1,1),
  61.     ReportID        INT NOT NULL,
  62.     
  63.     Capabilities        INT NOT NULL,
  64.     Name            NVARCHAR(255) NOT NULL,
  65.     TypeID            INT NOT NULL,
  66.     HelpID            INT NOT NULL,
  67.  
  68.     CONSTRAINT        cnstMIID PRIMARY KEY(ID),
  69.     CONSTRAINT        cnstMRID FOREIGN KEY(ReportID) REFERENCES TReport(ID)
  70. );
  71.  
  72. CREATE TABLE TClass (
  73.     ID            INT IDENTITY (1,1),
  74.     ModuleID        INT NOT NULL,
  75.     
  76.     Name            NVARCHAR(255) NOT NULL,
  77.     IconID            INT NOT NULL,
  78.     HelpID            INT NOT NULL,
  79.  
  80.     CONSTRAINT        cnstCIID PRIMARY KEY(ID),
  81.     CONSTRAINT        cnstCMID FOREIGN KEY(ModuleID) REFERENCES TModule(ID)
  82. );
  83.  
  84. CREATE TABLE TDevice (
  85.     ID            INT IDENTITY (1,1),
  86.     ModuleID        INT NOT NULL,
  87.     ClassID            INT,
  88.     
  89.     Name            NVARCHAR(255) NOT NULL,
  90.     IconID            INT NOT NULL,
  91.     HelpID            INT NOT NULL,
  92.  
  93.     CONSTRAINT        cnstDIID PRIMARY KEY(ID),
  94.     CONSTRAINT        cnstDMID FOREIGN KEY(ModuleID) REFERENCES TModule(ID),
  95.     CONSTRAINT        cnstDCID FOREIGN KEY(ClassID) REFERENCES TClass(ID)
  96. );
  97.  
  98. CREATE TABLE TItemGroup (
  99.     ID            INT IDENTITY (1,1),
  100.     ModuleID        INT NOT NULL,
  101.     ClassID            INT,
  102.     DeviceID        INT,
  103.     
  104.     Name            NVARCHAR(255) NOT NULL,
  105.     IconID            INT NOT NULL,
  106.     HelpID            INT NOT NULL,
  107.  
  108.     CONSTRAINT        cnstGIID PRIMARY KEY(ID),
  109.     CONSTRAINT        cnstGMID FOREIGN KEY(ModuleID) REFERENCES TModule(ID),
  110.     CONSTRAINT        cnstGCID FOREIGN KEY(ClassID) REFERENCES TClass(ID),
  111.     CONSTRAINT        cnstGDID FOREIGN KEY(DeviceID) REFERENCES TDevice(ID)
  112. );
  113.  
  114. CREATE TABLE TItem (
  115.     ID            INT IDENTITY (1,1),
  116.     ModuleID        INT NOT NULL,
  117.     ClassID            INT,
  118.     DeviceID        INT,
  119.     GroupID            INT,
  120.     
  121.     Name            NVARCHAR(255) NOT NULL,
  122.     DataValue        NVARCHAR(255),
  123.     IconID            INT NOT NULL,
  124.     TypeID            INT NOT NULL,
  125.     HelpID            INT NOT NULL,
  126.  
  127.     CONSTRAINT        cnstIIID PRIMARY KEY(ID),
  128.     CONSTRAINT        cnstIMID FOREIGN KEY(ModuleID) REFERENCES TModule(ID),
  129.     CONSTRAINT        cnstICID FOREIGN KEY(ClassID) REFERENCES TClass(ID),
  130.     CONSTRAINT        cnstIDID FOREIGN KEY(DeviceID) REFERENCES TDevice(ID),
  131.     CONSTRAINT        cnstIGID FOREIGN KEY(GroupID) REFERENCES TItemGroup(ID)
  132. );
  133.  
  134. CREATE TABLE TControl (
  135.     ID            INT IDENTITY (1,1),
  136.     ModuleID        INT NOT NULL,
  137.     ClassID            INT,
  138.     DeviceID        INT,
  139.     
  140.     Name            INT NOT NULL,
  141.     DataValID        INT NOT NULL,
  142.     DataValue        NVARCHAR(255),
  143.  
  144.     CONSTRAINT        cnstTID PRIMARY KEY(ID),
  145.     CONSTRAINT        cnstTMID FOREIGN KEY(ModuleID) REFERENCES TModule(ID),
  146.     CONSTRAINT        cnstTCID FOREIGN KEY(ClassID) REFERENCES TClass(ID),
  147.     CONSTRAINT        cnstTDID FOREIGN KEY(DeviceID) REFERENCES TDevice(ID)
  148. );
  149.  
  150. CREATE TABLE TIDCount (
  151.     TableName        NVARCHAR(10) PRIMARY KEY,
  152.     CurrentID        INT NOT NULL
  153. );
  154.  
  155. --
  156. -- Set-up keys/indexes
  157. --
  158.  
  159. CREATE INDEX ndxModuleParent ON TModule(ReportID);
  160.  
  161. CREATE INDEX ndxModuleType ON TModule(TypeID);
  162.  
  163. CREATE INDEX ndxClassParent ON TClass(ModuleID);
  164.  
  165. CREATE INDEX ndxClassType ON TClass(IconID);
  166.  
  167. CREATE INDEX ndxDeviceParent ON TDevice(ModuleID, ClassID);
  168.  
  169. CREATE INDEX ndxDeviceType ON TDevice(IconID);
  170.  
  171. CREATE INDEX ndxGroupParent ON TItemGroup(ModuleID, ClassID, DeviceID);
  172.  
  173. CREATE INDEX ndxGroupType ON TItemGroup(IconID);
  174.  
  175. CREATE INDEX ndxItemParent ON TItem(ModuleID, ClassID, DeviceID, GroupID);
  176.  
  177. CREATE INDEX ndxItemType ON TItem(IconID);
  178.  
  179. CREATE INDEX ndxControlParent ON TControl(ModuleID, ClassID, DeviceID);
  180.  
  181. CREATE INDEX ndxControlType ON TControl(Name);
  182.  
  183. CREATE INDEX ndxIDCount ON TIDCount(TableName);
  184. GO
  185.  
  186. --
  187. -- Views
  188. --
  189.  
  190. CREATE VIEW VItemNGroup
  191. AS
  192. SELECT TOP 100 PERCENT
  193. [TItemGroup].[ID] AS TIG_ID, [TItemGroup].[ModuleID] AS TIG_ModuleID,
  194. [TItemGroup].[ClassID] AS TIG_ClassID, [TItemGroup].[DeviceID] AS TIG_DeviceID,
  195. [TItemGroup].[IconID] AS TIG_IconID, [TItemGroup].[HelpID] AS TIG_HelpID,
  196. [TItemGroup].[Name] AS TIG_Name,
  197. [TItem].[ID] AS TI_ID, [TItem].[IconID] AS TI_IconID, [TItem].[HelpID] AS TI_HelpID,
  198. [TItem].[Name] AS TI_Name, [TItem].[TypeID], [TItem].[DataValue]
  199. FROM TItemGroup, TItem
  200. WHERE TItem.GroupID=TItemGroup.ID
  201. ORDER BY TItemGroup.ID, TItem.ID
  202. GO
  203.  
  204. --
  205. -- Inserts
  206. --
  207.  
  208. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TItem', 1);
  209. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TControl', 1);
  210. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TItemGroup', 1);
  211. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TDevice', 1);
  212. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TClass', 1);
  213. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TModule', 1);
  214. INSERT INTO TIDCount (TableName, CurrentID) VALUES ('TReport', 1);
  215. GO
  216.